import 'package:flutter/material.dart';
import 'package:flutter_first_project/api/user.dart';
import 'package:flutter_first_project/utils/Emitter.dart';
import 'package:flutter_first_project/utils/TokenManager.dart';
// import 'package:flutter_first_project/utils/TokenManager.dart';
// import 'package:flutter_first_project/utils/toast.dart';

class MinePage extends StatefulWidget {
  const MinePage({super.key,required this.currentIndex,required this. updateIndex});
  final int currentIndex;
  final Function(int) updateIndex;
  @override
  State<MinePage> createState() => _MinePageState();
}

class _MinePageState extends State<MinePage> {
  // 菜单数据
  final List menuList = [
    {
      "title": "我的房屋",
      "icon": "assets/images/house_profile_icon@2x.png",
    },
    {
      "title": "我的报修",
      "icon": "assets/images/repair_profile_icon@2x.png",
    },
    {
      "title": "访客记录",
      "icon": "assets/images/visitor_profile_icon@2x.png",
    }
  ];

  List<Widget> getTitleChild() {
    return [
      ClipRRect(
        borderRadius: BorderRadius.circular(50.0),
        child:
            userInfo['avatar'] != ''?
        Image.network(userInfo['avatar'],width: 50, height: 50,) :
         Image.asset(
          'assets/images/avatar_1.jpg',
          width: 50,
          height: 50,
        ),
      ),
      const SizedBox(width: 10),
       Text(userInfo['nickName'] ??'用户名', style: const TextStyle(fontSize: 16, color: Colors.white)),
      const Spacer(), // 间隔
     GestureDetector(
        onTap: () {
          Navigator.pushNamed(context, '/profile',arguments: userInfo);
        },
        child: const Row(children: [
           Text(
        '去完善信息',
        style: TextStyle(color: Colors.white),
      ),
      Icon(
        Icons.arrow_forward_ios,
        color: Colors.white,
        size: 13,
      )
        ],)
     )
    ];
  }

  List<Widget> getChildren() {
    return menuList
        .map(
          (item) => SizedBox(
            height: 50,
            child: Row(
              children: [
                Row(
                  children: [
                    Image.asset(
                      item['icon'],
                      width: 20,
                      height: 20,
                    ),
                    const SizedBox(
                      width: 10,
                    ),
                    Text(
                      item['title'],
                      style: const TextStyle(fontSize: 16),
                    )
                  ],
                ),
                const Spacer(),
                const Icon(
                  Icons.arrow_forward_ios,
                  size: 12,
                  color: Colors.grey,
                )
              ],
            ),
          ),
        )
        .toList();
  }
  // 获取用户信息
  Map<String, dynamic> userInfo = {"id": "", "avatar": "", "nickName": ""};
@override
  void didUpdateWidget(covariant MinePage oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (widget.currentIndex == 1) {
      getUserInfo();
    }
  }
getUserInfo()async{
 userInfo =  await getUserInfoAPI();
  setState(() {});
}

// 监听
@override
  void initState() {
    // TODO: implement initState
    super.initState();
    registerEvent();
  }
 void registerEvent() {
    // 必须加泛型 因为只监听登录成功事件 否则就乱套了
    eventBus.on<LogSuccessEvent>().listen((params) {
      getUserInfo(); // 重新获取数据
    });
  }

  void _logout() async {
    showDialog(context: context, 
    builder: 
    (context) =>  AlertDialog(
      title: const Text('提示'),
      content: const Text('确定退出登录吗？'),
      actions: [
        TextButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: const Text('取消'), ),
          TextButton(
            onPressed: () {
              tokenManager.deleteToken(); // 删除token
              widget.updateIndex(0); //调用父组件的方法
              Navigator.pop(context); 
              // 清空用户信息
              eventBus.fire(LogoutEvent());
            },
            child: const Text('确定'),
          )
      ],
));
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color.fromARGB(200, 85, 145, 175),
      appBar: AppBar(
        title: const Text(
          '我的',
          style: TextStyle(color: Colors.white),
        ),
        backgroundColor: Colors.transparent,
        centerTitle: true,
      ),
      body: ListView(
        children: [
          // 个人信息
          Container(
            padding: const EdgeInsets.all(10),
            child: GestureDetector(
              onTap: () {
                // Navigator.pushNamed(context, '/profile');
              },
              child: Row(
                children: getTitleChild(),
              ),
            ),
          ),
          Container(
            padding: const EdgeInsets.all(15),
            margin: const EdgeInsets.symmetric(vertical: 20, horizontal: 10),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(10),
            ),
            child: Column(
              children: getChildren(),
            ),
          ),
           Padding(
            padding: const EdgeInsets.only(
              left: 10,
              right: 10,
            ),
            child: Row(
              children: [
                Expanded(
                  child: ElevatedButton(
                    style: ElevatedButton.styleFrom(
                      backgroundColor: const Color.fromARGB(255, 222, 14, 14),
                      minimumSize: const Size(100, 50),
                    ),
                    onPressed: () {
                      _logout();
                    },
                    child: const Text(
                      '退出',
                      style: TextStyle(
                        color: Colors.white,
                      ),
                    ),
                  ),
                )
              ],
            ),
          )
        ],
      ),
    );
  }
}
